/*------------------------------------------------------------------*/
/*																	*/
/*							fruit.c      							*/
/* 																	*/
/* 																	*/
/*------------------------------------------------------------------*/


#include "fruit.h"


/*------------------------------------------------------------------*/
/*																	*/
/*							Generation de nombres 					*/
/* 									aleatoires						*/
/* 																	*/
/*------------------------------------------------------------------*/
int nombreAleatoireSurX()
{
    
    int nb;
    srand(time(NULL));

    nb = (rand() % (DIMX-2)) + 1;

    return nb;

}

int nombreAleatoireSurY()
{
    
    int nb;
    srand(time(NULL));

    nb = (rand() % (DIMY-2)) + 1;

    return nb;

}

    /*-----------------------------------------------*/
    /*                                               */
    /*             FONCTIONS RELATIVES A LA          */
    /*               GENERATION DES FRUITS           */
    /*-----------------------------------------------*/
void genererFruit(Fruit *f, serpent s,  int * tab, int M)
{
    /*CREATION D'UNE CELLULE POUR PARCOURIR LA LISTE*/
   	Cellule *temp = s.lSerp.prem;
    
    srand(time(NULL));
    
    /* NOUVELLES COORDONNES DU FRUIT*/
    f->pos.posX = nombreAleatoireSurX();
    f->pos.posY = nombreAleatoireSurY();
    
    /*ON PARCOURE LA LISTE*/
 	while (temp !=NULL)
	{
        /*SI LES COORDONNES DE LA POMME SONT LES MEME QUE UN ELEMENT DU SERPENT*/
        if ((f->pos.posX == temp->p.posX)&&(f->pos.posY == temp->p.posY))
        {
            f->pos.posX = nombreAleatoireSurX(); /* ON CHANGE LES COORDONNES X*/
            f->pos.posY = nombreAleatoireSurY(); /* ON CHANGE LES COORDONNES Y*/
        }
        else
        {
           temp = temp->suivant; /* ON REGARDE SUR L'ELEMENT SUIVANT DU SERPENT SI LES COORDONNES SONT LES MEMES*/
        }
    }
    /*ON GENERE UN NOMBRE ALEATORE ENTRE 3 ET 4 QUI DETERMINERA QUEL FRUIT SERA AFFICHE*/
    f->type = (rand() % 2) + 3;
    /*NOUVELLE VALEUR DANS LE TABLEAU*/
    tab[M * f->pos.posX + f->pos.posX] = f->type;
}


void mangeFruit(Fruit *f, serpent s, int * tab, int M, int *compteur)
{

    /*DECLARATION DES VARIABLES POUR RECUPERER LES POSITIONS X Y DU FRUIT ET DU SERPENT*/
    int posxf, posyf, posxs, posys;
    /* RECUPERATION DE LA POSITION DU FRUIT*/
    posxf = f->pos.posX;
    posyf = f->pos.posY;
    /* RECUPERATION DE LA POSITION DE LA TETE DU SERPENT*/
    posxs = s.lSerp.last->p.posX;
    posys = s.lSerp.last->p.posY;
    /* SI LES DEUX POSITIONS SONT LES MEME, ON GENERE UN NOUVEAU FRUIT ET ON INCREMENTE LE COMPTEUR*/
    if ((posxf == posxs) && (posyf == posys))
    {
        genererFruit(f, s, tab, M);
        *compteur = *compteur + 1;
    }
}


